package com.qymerge.manage.base.ro;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 *
 * @author Xiao
 * @version 1.0.0
 * @date 2025/5/26 22:47
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BDMSaleLinesRO implements Serializable {

    private Long Id;                               // 自增

    private String BillId;                         // 应收单ID
    private String BillCode;                       // 应收单编号
    private String BillItemId;                     // 应收单明细ID

    private String CompanyId;                      // 法人公司ID
    private String CompanyName;                    // 法人公司名称
    private String CompanyCode;                    // 法人公司编码

    private String CustomerId;                     // 客户ID
    private String CustomerName;                   // 客户名称
    private String CustomerCode;                   // 客户编码

    private String CustomerInternalCompanyId;      // 客户
    private String CustomerInternalCompanyName;    // 客户
    private String CustomerInternalCompanyCode;    // 客户

    private String SalesCostCenterId;              // 客户的销售组ID
    private String SalesCostCenterName;            // 客户的销售组名称

    private String PeriodId;                       // 会计期间Id
    private Integer PeriodYear;                    // 会计期间年
    private Integer PeriodQuarter;                 // 会计期间季
    private Integer PeriodMonth;                   // 会计期间月
    private String PeriodCode;                     // 会计期间代码

    private Date BizDate;                          // 业务日期

    private String MaterialId;                     // 物料ID
    private String MaterialName;                   // 物料名称
    private String MaterialCode;                   // 物料编码
    private Integer Quantity;                      // 数量
    private Integer PackQuantity;                  // 数量（箱）
    private Integer StdPackQuantity;               // 数量
    private BigDecimal SalesPrice;                 // 销售单价
    private BigDecimal SalesAmount;                // 金额

    private BigDecimal RevenueExternalAmount;      // 收入
    private BigDecimal RevenueInternalAmount;      // 收入
    private String RevenueAccountViewCode;         // 收入对应的科目代码（法人公司科目）
    private String RevenueAccountViewName;         // 收入对应的科目名称（法人公司科目）
    private String RevenueGroupAccountViewCode;    // 收入对应的科目（集团科目）

    private BigDecimal CostExternalAmount;         // 成本
    private BigDecimal CostInternalAmount;         // 成本
    private String CostAccountViewCode;            // 成本科目Code（法人公司科目）
    private String CostAccountViewName;            // 成本科目Name（法人公司科目）
    private String CostGroupAccountViewCode;       // 成本对应的科目（集团科目）

    private String DataSource;                     // 数据来源 应收单明细：10 销售出库单：20（只有成本，没有收入） 总账凭证虚拟：30

    private String JournalEntryId;                 // 总账分录Id
    private Date Etl_Last_Date;                    // ETL时间
    private String PeriodDate;                     // 本月1号

    private Integer Source;                        // 10:系统 20:手动

    public BDMSaleLinesRO(String billCode, Date etl_Last_Date, String dataSource) {
        BillCode = billCode;
        Etl_Last_Date = etl_Last_Date;
        DataSource = dataSource;
    }
}
